AWS CloudHSMクラスターをバックアップからリストアしてみた
CloudHSMの料金は結構いい値段
こんにちは、のんピ(@non____97)です。
皆さんはCloudHSMの料金はいい値段だなと思ったことはありますか? 私はあります。
CloudHSMはHSMの稼働時間によって課金されます。東京リージョンの場合、1.81USD/hです。最新の料金はAWS公式の料金表をご覧ください。
加えて、HSMを一時停止すると言うこともできません。
そのため、検証が日を跨いでしまった場合などはは10USDかかってしまうこともあります。
これは困る
ところで、CloudHSMはバックアップを作成できます。
また、2022/7/19時点ではバックアップに料金はかからないようです。
...
......
はい。検証が日を跨いでしまう場合は、バックアップを作成してHSMを削除し、再開時にリストアすれば良いのです。
ということで試してみました。
CloudHSMクラスターのリストア
早速、CloudHSMクラスターのリストアを行います。
以下の検証でCloudHSMクラスターを作成して、検証後に削除しました。
HSMを削除すると、バックアップが作成されます。
バックアップを作成するようサービスに指示することはできませんが、特定の操作を行うことで強制的にバックアップを作成させることは可能です。以下のいずれかのアクションを実行すると、サービスがバックアップを作成します。
- クラスターをアクティベートするには
- HSM をアクティブクラスターに追加します。
- アクティブクラスターから HSM を削除
CloudHSMのコンソールを確認すると、確かにバックアップがありました。バックアップを選択して、バックアップからのクラスターの作成
をクリックします。
VPCとサブネットの設定をして続行
をクリックします。
バックアップの保持期間を入力して続行
をクリックします。
タグは特に変更せずに確認
をクリックします。
設定内容を確認してクラスターの作成
をクリックします。
4分ほど待つと、CloudHSMクラスターの作成が完了しました。状態がActive
になっているのでCA証明書のアップロードやPRECOのパスワード初期化などの操作は不要そうですね。HSM自体はまだ空なので、HSMの作成
をクリックします。
HSMを作成するサブネットを選択してCreate
をクリックします。
8分ほどでHSMの作成が完了しました。こちらも状態がActive
になっています。
HSMへの接続
リストアしたHSMに接続します。
HSMのIPアドレスがリストア前後で変わっているので、再設定します。
$ sudo /opt/cloudhsm/bin/configure -a 172.31.43.109 Updating server config in /opt/cloudhsm/etc/cloudhsm_client.cfg Updating server config in /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
IPアドレスの更新をしないと、以下のように接続することができません。
/opt/cloudhsm/bin/key_mgmt_util Failed to connect socket get_peer_version() returned 0x40000040 : LIQUIDSECURITY: Daemon socket connection error Failed to connect socket Cfm3Initialize() returned 0x40000040 : LIQUIDSECURITY: Daemon socket connection error Cfm3Initialize() returned app id : ffffffff Failed to connect socket Could not retrieve/create Thread Info Cfm3CloseSession returned: 0x40000040 LIQUIDSECURITY: Daemon socket connection error
IPアドレス更新後、CMUでHSMに接続します。
$ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg Ignoring E2E enable flag in the configuration file Connecting to the server(s), it may take time depending on the server(s) load, please wait... Connecting to server '172.31.43.109': hostname '172.31.43.109', port 2225... Connected to server '172.31.43.109': hostname '172.31.43.109', port 2225. E2E enabled on server 0(172.31.43.109) aws-cloudhsm>
接続後、ユーザー一覧を表示します。
aws-cloudhsm>listUser Users on server 0(172.31.43.109): Number of users found:3 User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 CO admin NO 0 NO 2 AU app_user NO 0 NO 3 CU crypto_user NO 0 NO aws-cloudhsm>quit disconnecting from servers, please wait...
元々のHSMで追加したcrypto_user
と言うユーザーがいることが確認できました。
KMUでHSM上の鍵一覧も表示してみます。
# KMUのサービスの起動 # IPアドレスを更新する前に起動していた場合は、restart で再起動 $ sudo service cloudhsm-client start Redirecting to /bin/systemctl start cloudhsm-client.service # KMUで接続 sh-4.2$ /opt/cloudhsm/bin/key_mgmt_util Cfm3Initialize() returned app id : 01000000 session_handle 1000000 Current FIPS mode is: 00000002 Help Commands Available: Syntax: <command> -h Command Description ======= =========== exit Exits this application help Displays this information Configuration and Admin Commands getHSMInfo Gets the HSM Information getPartitionInfo Gets the Partition Information listUsers Lists all users of a partition . . (中略) . . IsValidKeyHandlefile Checks if private key file has an HSM key handle or a real key listAttributes List all attributes for getAttributes listECCCurveIds List HSM supported ECC CurveIds # 事前に作成したCUでログイン Command: loginHSM -u CU -s crypto_user -p cYoav.j8ZG87D!NmFvU.sjVATb8RwE4r Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS # 鍵一覧を表示 Command: findKey Total number of keys present: 3 Number of matching keys from start index 0::2 Handles of matching keys: 6, 7, 9 Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS # HSMから切断 Command: logoutHSM Cfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS Cluster Status: Node id 0 status: 0x00000000 : HSM Return: SUCCESS Command: exit
HSM上で生成したキーペアや、インポートした秘密鍵が確認できました。
検証が日を跨ぐのであれば一旦HSMを削除してリストアするのもアリ
CloudHSMクラスターをバックアップからリストアしました。
新規にHSMを作成するより断然早く、リストア開始15分程度でHSMに接続できました。このぐらいの時間と手間なのであれば、検証の再開まで時間が開く場合は一旦HSMを削除して、検証再開時にリストアするというのもアリだなと思いました。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!